package day9;

import day5.Person;

/*
* 被final修饰的方法
*
* */
public class Demo2 {
    public static void main(String[] args) {
        //final 可以修饰局部变量,当前变量只能被赋值一次
        final int a = 1;

        //final修饰的引用类型对象，限制变量中的地址不能变化，并不限制对象中的属性值
        final Demo2Person demo2Person = new Demo2Person("张三");

//        demo2Person = n
//        ew Demo2Person("李四");

        demo2Person.name = "李四";
    }
}

class Demo2Person{

    public String name;

    public Demo2Person(String name){
        this.name = name;
    }

}


class Demo2Fu{
    //被final修饰的属性，和继承没有任何关系，当前属性的属性值不能被更改
    //final修饰成员属性时，需要在对象创建前对其属性赋值(赋初始值或者在构造方法中赋值),只能被赋值一次
//    public final int num;

    public final String name = "张三";

//    public Demo2Fu(int num){
//        this.num = num;
////        this.name = "里斯";
//    }

    public void show(){

    }

    //被final修饰的 方法不能被子类重写,但是可以被子类调用
    public final void showFa(){

    }

}

class Demo2Zi extends Demo2Fu{


    //如果子类重写了父类的方法，可以加final将方法定义为最终方法
    @Override
    public final void show(){
        System.out.println("aaa");
        showFa();
    }

//    public void showFa(){
//
//    }
}
